home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCMania 73
/
PCMania CD73_1.iso
/
sharewar
/
varios
/
partial
/
LIB
/
ARTICULO.014
< prev
next >
Wrap
Text File
|
1996-02-01
|
8KB
|
167 lines
/* CRIPTOGRAFIA */
Bienvenidos a una nueva sección [ haber como que es el 1º número!, a veces
me impresiono de lo inteligente que puedo ser ;-) ]
, Partial Zone no podía olvidar uno de los temas que están resonando
últimamente con gran fuerza aunque su prodecendiencia es antiquísima,
parece ser que hoy en día su utilización es imprescindible. El aumento de la
libertad de información, de los medios de comunicación, etc, hace que muchos
usuarios, empresas ... tengan que encriptar cierta información que va dirigida
a un público determinado, la cuestión es si podemos fiarnos de los algoritmos
criptográficos utilizados y lo mejor como reventarlos ( HE! HE! ).
En esta sección se hará un recorrido histórico desde la Criptografía Clásica
a sistemas actuales como RSA, DES, firmas digitales ( los estudiaremos con
detenimiento ), y lo más importante la criptografía en el comercio
electrónico ( tarjetas monedero, etc.) y si tenemos tiempo crearemos
nuestros propios algoritmos matemáticos.
Bueno al corte ...
DEFINICION
----------
El términco criptografía proviene de las palabras griegas Kriptos y Graphos
que traducido significa oculto y escribir, respectivamente, por lo
tanto para que nos entendamos es el modo de realizar una escritura secreta, es
decir, símbolos, letras, etc ... que escondan aparentemente la información
deseada.
El estudio de la escritura secreta o encriptada / codificada se conoce como
criptoanálisis y la ciencia que se ocupa tanto del criptoanálisis como de la
criptografía se denomina CRIPTOLOGIA.
Por otro lado el sistema para escribir un mensaje oculto se conoce como
Criptosistema y el mensaje secreto como Criptograma. La acción de
transformar un mensaje comprensible en uno inteligible se denomina
criptografiado o cifrado y al proceso inverso descifrado, aunque es más común
la utilización de términos como encriptado y desencriptado
A POR LOS ALGORITMOS CRIPTOGRAFICOS.
------------------------------------
Empecemos por los algoritmos criptográficos clásicos ( aproximadamente datan
del siglo V a.C ), es decir, todos aquellos hasta los de este siglo, que son
considerados como modernos.
Los algoritmos clásicos estaban orientados a ocultar la información mediante
sustituciones y transposiciones en el orden de los caracteres que constituían
el texto.
En cuanto a los algoritmos de transposición consisten en variar el orden
de colocación de los caracteres que se encuentran en el texto comprensible
,no le dedicaremos mayor atención debido a que solo no es efectivo, es decir,
es fácil para un criptoanalista obtener el algoritmo de encriptación, de
todos modos más adelante veremos en que se basan los criptoanalistas para
estudiar un texto cifrado.
Por otro lado podemos distinguir 4 tipos de cifrados de sustitución:
-SUSTITUCION SIMPLE: Cada caracter del texto en claro le corresponde un
caracter en el texto cifrado, siempre el mismo, es conocido también por el
nombre de 'one to one mapping'.
-SUSTITUCION HOMOFONICA: Es aquel en la cual cada caracter del texto en claro
puede ser sustituido por un caracter diferente en el texto cifrado, es
conocido también como 'one-to-many mapping'.
-SUSTITUCION POLIALFABETICA: Cada caracter es cifrado con alfabetos de
caracteres diferentes dependiendo de una clave, es conocido como 'multiple
mapping'.
-SUSTITUCION POLIGRAMICA: Se caracteriza por sustituir bloques de caracteres
en lugar de una sustitución uno a uno, que permite ocultar en cierto modo
el algoritmo criptográfico ante un análisis frecuencial ( oculta la frecuencia
de aparición de caracteres )
UNO A UNO
----------
Ahora vamos a ver ejemplos de estos tipos de sustituciones, ya clásicos en
este mundillo...
METODO CESAR
------------
Este algoritmo está atribuido a Julio César ( siglo I a.C ) y consistía y
consiste en sustituir cada símbolo del alfabeto por la letra que se encuentre
tres posiciones a su derecha.
Por ejemplo:
A B C D E Mensaje Comprensible: CABE
D E F G H Mensaje Cifrado: FDEH
La expresión (y nos iremos aconstumbrando a estas expresiones ) matemática
sería C=( M + 3) mod 27, donde C es el mensaje cifrado, M el mensaje
compresible y mod el resto de la división entera entre ( M + numero ) y el
valor de mod , por ejemplo apliquemos esto a la letra 'Z=26',
C=( 26 + 3) mod 27,= 29 mod 27 = 2, que corresponde a la letra 'C' ( recordar
que la A=0 , por lo tanto si cogemos la Z y nos situamos 3 lugares a su
derecha obtendremos la C).
Variantes de este algoritmo sitúan en vez de 3 posiciones a su derecha, un
número comprendido entre el 0 y el 26 ( las 26 letras del alfabeto español )
Al existir únicamente 26 letras en el alfabeto y al tratarse de una
sustitución uno a uno, es facilmente vulnerable ante un estudio estadístico
en aparición en la frecuencia de caracteres. De todos modos aunque
el número caracteres posibles de encriptar fuera mayor, como en el caso
del programa ejemplo que incluyo, sería igualmente vulnerable.
SUSTITUCION SIMPLE MONOALFABETO
-------------------------------
Este método es una variante más compleja ( JA! ) que el método anterior,
realiza una sustitución de cada símbolo del alfabeto por otro según la
expresión matemática C= ( y M + x) mod 27, entonces sustituimos un valor
en X e Y, y realizamos el proceso anterior teniendo encuenta las variables
( sencillo no? ).
Las combinaciones que existen o se producen en este caso son elevadas pero
sin embargo como el cifrado sigue siendo uno a uno este método es vulnerable
al análisis estadístico.
SUSTITUCION HOMOFONICA
----------------------
Este método consiste en sustituir un caracter por otro que no sea siempre
igual, ya que le corresponden un conjunto de símbolos, que reciben el
nombre de homofemas. Cada conjunto tiene un número de símbolos proporcional
a la frecuencia de aparición de cada símbolo en el alfabeto del idioma en
cuestión, entonces se eligen aleatoriamente y ya está...
Conjuntos Homofónicos Alfabeto
07,13,15... A Mensaje Comprensible-> REAL
14,25,44... E Mensaje Cifrado-> 19,14,07,11
11,31,52... L o
19,34,64... R 34,44,13,31
etc...
De este modo se complica bastante el estudio mediante el análisis estadístico.
De todos modos hay que tener en cuenta que estos métodos por si sólos son
pocos efectivos, sin embargo si realizaramos un sistema de cifrado
por etapas, una sustitución homofónica más perfeccionada permitiría variar
la frecuencia de aparición de caracteres que en cierto modo dificultaría
a un más el posible estudio de nuestro sistema de cifrado. ( Algún día
hablaremos de uno de los misteríos de la criptografía que se basa
precisamente en unos cifrados de sustitución homofónica, eso si a lo bestia:
los cifrados de Beale )
Bueno por hoy ya está bien, el próximo número continuaremos con las
sustituciones polialfabeto ( de Vigenere ), el cifrado de Vernam,
los cifrados con xor, not, or... y nos introduciremos en el mundo de las
claves públicas, secretas, etc.
En el directorio REGALOS\CRIPT se encuentra un programa hecho en C que
muestra una posible variante del código de Cesar, he optado por no
incluir más ejemplos en programas para que así el lector pueda desarrollarlos
por si mísmo, de todos modos lo importante, por lo menos así lo creo, es
conocer por ahora la teoría, pues cualquier programador con un pizca de
imaginación podrá hacer esto y sistemas de cifrado mucho más complejos.
Por último me gustaría enviar un agradecimiento a todas las publicaciones,
revistas, libros, web's, etc... que muestran especial atención en divulgar
estos conocimientos y un agradecimiento personal, entre otros, a Spree por
sus artículos en VZM que nos introdujo a muchos, entre ellos yo, en este
maravilloso mundo de la criptografía.
HANDLER